package sudoku.view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.util.Observable;
import java.util.Observer;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

/**
 * @author karma
 *  Una de las vista grafica del juego
 * 
 */
public class FirstGui extends JFrame implements Observer, IView {

	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	JTextField matrix[][] = new JTextField[9][9];
	private  final int ALTO = 1;

	/**
	 * Create the frame.
	 */
	public FirstGui() {
		super("sodoku");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		setSize(480, 640);
		setLocationRelativeTo(null);
		setVisible(true);

		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);

		// menu archivo
		JMenu mnArchivo = new JMenu("Archivo");
		mnArchivo.setMnemonic('A');
		menuBar.add(mnArchivo);

		JMenuItem mntmCopiar = new JMenuItem("Nuevo");
		mntmCopiar.setMnemonic('N');
		mnArchivo.add(mntmCopiar);
		mnArchivo.addSeparator();

		JMenuItem mntmDetener = new JMenuItem("Detener");
		mnArchivo.add(mntmDetener);
		mntmDetener.setMnemonic('D');
		mnArchivo.addSeparator();

		JMenuItem mntmSalir = new JMenuItem("Salir");
		mntmSalir.setMnemonic('S');
		mnArchivo.add(mntmSalir);
		// fin menu archivo

		// menu editar
		JMenu mnEditar = new JMenu("Editar");
		mnArchivo.setMnemonic('E');
		menuBar.add(mnEditar);

		JMenuItem mntmPreferencias = new JMenuItem("Preferencias");
		mntmPreferencias.setMnemonic('P');
		mnEditar.add(mntmPreferencias);
		// fin menu editar

		// menu ayuda
		JMenu mnAyuda = new JMenu("Ayuda");
		menuBar.add(mnAyuda);

		JMenuItem mntmAcercaDe = new JMenuItem("Acerca de");
		mnAyuda.add(mntmAcercaDe);
		// fin menu ayuda

		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);

		// matriz
		JPanel panel = new JPanel();
		contentPane.add(panel, BorderLayout.CENTER);
		GridLayout grilla = new GridLayout(9, 9);
		panel.setLayout(grilla);

		for (int i = 0; i < matrix.length; i++) {
			for (int j = 0; j < matrix.length; j++) {
				matrix[i][j] = new JTextField();
				Font f = new Font("TimesRoman", Font.BOLD, 36);
				matrix[i][j].setHorizontalAlignment((int) CENTER_ALIGNMENT);
				matrix[i][j].setFont(f);
				matrix[i][j].setCaretColor(Color.WHITE);// color del cursor
				matrix[i][j].setForeground(Color.WHITE);
				panel.add(matrix[i][j]);
			}
		}
		pintar_matrix();
		// fin matriz

		// botonera
		JPanel botonera = new JPanel();
		botonera.setLayout(new FlowLayout());

		JButton btnResolver = new JButton("Resolver");
		botonera.add(btnResolver);

		JButton btnBorrar = new JButton("Borrar");
		botonera.add(btnBorrar);

		JButton btnPista = new JButton("Pista");
		botonera.add(btnPista);

		contentPane.add(botonera, BorderLayout.SOUTH);
		// fin botonera
	}

	private void pintar_matrix() {
		for (int i = 0; i < matrix.length; i++) {
			for (int j = 0; j < matrix.length; j++) {
				matrix[i][j].setBorder(BorderFactory
						.createLineBorder(Color.gray));
				matrix[i][j].setBackground(Color.LIGHT_GRAY);
			}
		}
		pintarCudrado(3, 0, this.ALTO);
		pintarCudrado(0, 3, this.ALTO);
		pintarCudrado(6, 3, this.ALTO);
		pintarCudrado(3, 6, this.ALTO);
	}

	private void pintarCudrado(int x, int y, int altura) {
		for (int i = x; i < x + 3; i++) {
			for (int j = y; j < y + 3; j++) {
				if (altura == this.ALTO) {
					matrix[i][j].setBorder(BorderFactory
							.createLineBorder(Color.LIGHT_GRAY));
					matrix[i][j].setBackground(Color.GRAY);
				} else
					matrix[i][j].setBorder(BorderFactory.createEtchedBorder());
			}
		}
	}

	public void dibujarNumeros() {

	}

	@Override
	public void update(Observable o, Object arg) {

	}

	@Override
	public void present(String model) {
		JOptionPane.showMessageDialog(null, model);

	}

}
